在前兩天的 CommandLinePropertySource 的實作類別之後,現在介紹一過在過程之中,
常見的一個標籤 Annotation PropertySource
先來看官方對於 PropertySource 標籤的解釋
Annotation providing a convenient and declarative mechanism for adding a PropertySource to Spring's Environment]. To be used in conjunction with @`[Configuration] classes.
提供一個便利聲明式加入PropertySource 到Spring 環境的機制。
下方為一個官方提供的 Spring 主要註冊類別( 標註 @Configuration)
@Configuration
@PropertySource("classpath:/com/myco/app.properties")
public class AppConfig {
@Autowired
Environment env;
@Bean
public TestBean testBean() {
TestBean testBean = new TestBean();
testBean.setName(env.getProperty("testbean.name"));
return testBean;
}
}
app.properties 為以下內容
testbean.name=myTestBean
透過 PropertySource 將 app.properties 的內容提供到 PropertySource 的 Environment 集合。
看向註冊的方法,PropertySource 會將註冊資料注入到 Environment (來自 org.springframework.core.env 下的 Interface Environment) 。
第二個由官方提供的案例
@Configuration
@PropertySource("classpath:/com/${my.placeholder:default/path}/app.properties")
public class AppConfig {
@Autowired
Environment env;
@Bean
public TestBean testBean() {
TestBean testBean = new TestBean();
testBean.setName(env.getProperty("testbean.name"));
return testBean;
}
}
同樣是一個主要註冊類別,但這次不同的是, Annotation PropertySource 中的路徑帶有 ${} ,
而這個符號就和 @Value 標籤之中讀取註冊檔案的方式是相同的。
${my.placeholder:default/path} 會從系統環境變數之中,讀取 my.placeholder,若沒有讀取到就會去採用預設值 default/path 。
參考資料
{官方}Annotation PropertySource